{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d1f20875-c50d-46df-906b-49ec1d0c6002",
   "metadata": {},
   "source": [
    "## 10.11 InceptionNet的实现\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "c90a18b9-d8e8-431c-856c-35f1e4ed05e1",
   "metadata": {},
   "source": [
    "### 1.任务描述\n",
    "\n",
    "使用TensorFlow实现InceptionNet，对CIFAR-10数据集进行训练，实现多分类。"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "f5b4fc39-cbcf-432a-bf1e-e75e642d4b87",
   "metadata": {},
   "source": [
    "### 2.知识准备\n",
    "\n",
    "见教程。"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "55043130-4496-43a3-803b-9bc1cea8b1b8",
   "metadata": {},
   "source": [
    "### 3.任务分析构\n",
    "\n",
    "为了能更方便地搭建InceptionNet，先构建Inception结构块类及构成Inception结构块类的CBA（卷积-批标准化-激活）类。\n",
    "\n",
    "CBA类从上一个节点接收一个input，经过批标准化和ReLU激活函数后，输出到下一个节点。\n",
    "\n",
    "Inception结构块类则是由若干个CBA及最大值池化层（MaxPool2D）组成的。从图10-11-1中可以看出，由CBA和MaxPool2D构建的4个分支是并联关系，所以这4个分支都从上一个神经元接收相同的input，并经过自身分支结构的计算后分别得到一个分支输出。由Inception单元将这4个分支的输出堆叠并传输给下一个神经元。\n",
    "\n",
    "整个InceptionNet是将训练集input通过一个Conv2D卷积层处理之后，将处理结果传到按深度堆叠的Inception单元进行训练的。Inception单元训练完之后再经过全局均值池化层进行池化操作，最后由一个全连接层输出结果。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "435c6090-cfda-4f46-a550-22a368e41e4a",
   "metadata": {},
   "source": [
    "### 4.任务实施\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "ec75eb6c-5da3-467d-a471-ca3b47242dd6",
   "metadata": {},
   "source": [
    "执行代码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "2ae9da58-e339-4d22-9f8d-ca255711d89e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/5\n",
      "1563/1563 [==============================] - 37s 20ms/step - loss: 1.6368 - sparse_categorical_accuracy: 0.3913 - val_loss: 1.3690 - val_sparse_categorical_accuracy: 0.5014\n",
      "Epoch 2/5\n",
      "1563/1563 [==============================] - 32s 20ms/step - loss: 1.2163 - sparse_categorical_accuracy: 0.5581 - val_loss: 1.2015 - val_sparse_categorical_accuracy: 0.5659\n",
      "Epoch 3/5\n",
      "1563/1563 [==============================] - 32s 21ms/step - loss: 1.0261 - sparse_categorical_accuracy: 0.6335 - val_loss: 1.0442 - val_sparse_categorical_accuracy: 0.6335\n",
      "Epoch 4/5\n",
      "1563/1563 [==============================] - 32s 21ms/step - loss: 0.9142 - sparse_categorical_accuracy: 0.6743 - val_loss: 0.9314 - val_sparse_categorical_accuracy: 0.6673\n",
      "Epoch 5/5\n",
      "1563/1563 [==============================] - 32s 20ms/step - loss: 0.8374 - sparse_categorical_accuracy: 0.7037 - val_loss: 0.8552 - val_sparse_categorical_accuracy: 0.6929\n",
      "Model: \"inception10\"\n",
      "_________________________________________________________________\n",
      " Layer (type)                Output Shape              Param #   \n",
      "=================================================================\n",
      " conv_bn_relu (ConvBNRelu)   multiple                  512       \n",
      "                                                                 \n",
      " sequential_1 (Sequential)   (None, 8, 8, 128)         119616    \n",
      "                                                                 \n",
      " global_average_pooling2d (G  multiple                 0         \n",
      " lobalAveragePooling2D)                                          \n",
      "                                                                 \n",
      " dense (Dense)               multiple                  1290      \n",
      "                                                                 \n",
      "=================================================================\n",
      "Total params: 121,418\n",
      "Trainable params: 120,234\n",
      "Non-trainable params: 1,184\n",
      "_________________________________________________________________\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 1，导入模块\n",
    "import tensorflow as tf\n",
    "from matplotlib import pyplot as plt\n",
    "from tensorflow.keras.layers import Conv2D, BatchNormalization, Activation, MaxPool2D, Dense, GlobalAveragePooling2D\n",
    "from tensorflow.keras import Model\n",
    "\n",
    "# 2，加载数据集\n",
    "cifar10 = tf.keras.datasets.cifar10\n",
    "(x_train, y_train), (x_test, y_test) = cifar10.load_data()\n",
    "# 归一化\n",
    "x_train, x_test = x_train / 255.0, x_test / 255.0\n",
    "\n",
    "# 3，创建网络\n",
    "# 自定义CBA（卷积-批标准化-激活）类\n",
    "class ConvBNRelu(Model):\n",
    "    def __init__(self, ch, kernelsz=3, strides=1, padding='same'):\n",
    "        super(ConvBNRelu, self).__init__()\n",
    "        self.model = tf.keras.models.Sequential([\n",
    "            Conv2D(ch, kernelsz, strides=strides, padding=padding),\n",
    "            BatchNormalization(),\n",
    "            Activation('relu')\n",
    "        ])\n",
    "\n",
    "    def call(self, x):\n",
    "        # 当training=False时，BN通过整个训练集计算的均值、方差做批归一化\n",
    "        # 当training=True时，BN通过当前batch的均值、方差做批归一化\n",
    "        # 在推理时，training=False效果好\n",
    "        x = self.model(x, training=False) \n",
    "        return x\n",
    "\n",
    "# 自定义Inception结构块类\n",
    "class InceptionBlk(Model):\n",
    "    def __init__(self, ch, strides=1):\n",
    "        super(InceptionBlk,self).__init__()\n",
    "        self.ch = ch\n",
    "        self.strides = strides\n",
    "        # 第1分支\n",
    "        self.c1 = ConvBNRelu(ch, kernelsz=1, strides=strides)\n",
    "        # 第2分支\n",
    "        self.c2_1 = ConvBNRelu(ch, kernelsz=1, strides=strides)\n",
    "        self.c2_2 = ConvBNRelu(ch, kernelsz=3, strides=1)\n",
    "        # 第3分支\n",
    "        self.c3_1 = ConvBNRelu(ch, kernelsz=1, strides=strides)\n",
    "        self.c3_2 = ConvBNRelu(ch, kernelsz=5, strides=1)\n",
    "        # 第4分支\n",
    "        self.p4_1 = MaxPool2D(3, strides=1, padding='same')\n",
    "        self.c4_2 = ConvBNRelu(ch, kernelsz=1, strides=strides)\n",
    "    \n",
    "    def call(self,x):\n",
    "        # 第1分支输出\n",
    "        x1 = self.c1(x)\n",
    "        # 第2分支输出\n",
    "        x2_1 = self.c2_1(x)\n",
    "        x2_2 = self.c2_2(x2_1)\n",
    "        # 第3分支输出\n",
    "        x3_1 = self.c3_1(x)\n",
    "        x3_2 = self.c3_2(x3_1)\n",
    "        # 第4分支输出\n",
    "        x4_1 = self.p4_1(x)\n",
    "        x4_2 = self.c4_2(x4_1)\n",
    "        # 将4个分支的输出堆叠在一起，堆叠的方向沿深度方向\n",
    "        x = tf.concat([x1, x2_2, x3_2, x4_2], axis=3)\n",
    "        return x\n",
    "\n",
    "# 自定义网络模型类\n",
    "class Inception10(Model):\n",
    "    # num_blocks：InceptionNet 的 block 数\n",
    "    # num_classes：分类数\n",
    "    # init_ch：初始通道数\n",
    "    def __init__(self, num_blocks, num_classes, init_ch=16, **kwargs):\n",
    "        super(Inception10, self).__init__(**kwargs)\n",
    "        self.in_channels = init_ch\n",
    "        self.out_channels = init_ch\n",
    "        self.num_blocks = num_blocks\n",
    "        self.init_ch = init_ch\n",
    "        self.c1 = ConvBNRelu(init_ch)\n",
    "        self.blocks = tf.keras.models.Sequential()\n",
    "        for block_id in range(num_blocks):\n",
    "            for layer_id in range(2):\n",
    "                if layer_id == 0:\n",
    "                    block = InceptionBlk(self.out_channels, strides=2)\n",
    "                else:\n",
    "                    block = InceptionBlk(self.out_channels, strides=1)\n",
    "                self.blocks.add(block)\n",
    "            self.out_channels *= 2\n",
    "        # 全局均值池化\n",
    "        self.p1 = GlobalAveragePooling2D()\n",
    "        # 全连接输出\n",
    "        self.f1 = Dense(num_classes, activation='softmax')\n",
    "\n",
    "    def call(self, x):\n",
    "        x = self.c1(x)\n",
    "        x = self.blocks(x)\n",
    "        x = self.p1(x)\n",
    "        y = self.f1(x)\n",
    "        return y    \n",
    "    \n",
    "# 实例化模型对象\n",
    "model = Inception10(num_blocks=2, num_classes=10)\n",
    "\n",
    "# 4，配置网络\n",
    "model.compile(\n",
    "    # 优化器\n",
    "    optimizer='adam',\n",
    "    # 损失函数\n",
    "    loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits= False),\n",
    "    # 评测方法\n",
    "    metrics=['sparse_categorical_accuracy']\n",
    ")\n",
    "\n",
    "# 5，训练网络\n",
    "# 5.1执行训练，返回history对象\n",
    "history = model.fit(\n",
    "    x_train, y_train, batch_size=32, epochs=5, \n",
    "    validation_data=(x_test, y_test), validation_freq=1)\n",
    "\n",
    "# 6，输出模型结构和统计结果\n",
    "model.summary()\n",
    "\n",
    "# 可视化\n",
    "# 训练集Acc\n",
    "acc = history.history['sparse_categorical_accuracy']\n",
    "# 训练集Loss\n",
    "val_acc = history.history['val_sparse_categorical_accuracy']\n",
    "# 验证集Acc\n",
    "loss = history.history['loss']\n",
    "# Loss曲线\n",
    "val_loss = history.history['val_loss']\n",
    "\n",
    "# 可视化训练集准确率和损失\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.plot(acc, label='Training Accuracy')\n",
    "plt.plot(val_acc, label='Validation Accuracy')\n",
    "plt.title('Training and Validation Accuracy')\n",
    "plt.legend()\n",
    "# 可视化测试集准确率和损失\n",
    "plt.subplot(1, 2, 2)\n",
    "plt.plot(loss, label='Training Loss')\n",
    "plt.plot(val_loss, label='Validation Loss')\n",
    "plt.title('Training and Validation Loss')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e6044c99-0741-4378-b2b6-f60c293cc3a9",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
